iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0
Modern Web

Django新手指南系列 第 25

狗勾司機(?) 動態網址(下) 江狗(Django) 鐵人Day25

  • 分享至 

  • xImage
  •  


(懷疑狗生)

動態網址介紹為我們簡單實作看看,對於動態網址的應用會更加地直觀。

首先我們到urls.py中添加幾個指令:

<Project/urls.py>

urlpatterns = [
    (...)
    #新增一個可以輸入年級、班級、學號的路徑
    path('try_to_something_str/<str:Grade>/<str:Class>/<int:Number>',
         views.check_class_member),
]

views.py中添加以下指令:

<job/views.py>

@csrf_exempt
def check_class_member(request, Grade, Class, Number):
    #Grade, Class, Number是從路徑引入的參數值。
    outputinfo = {}  #JSON輸出用
    if request.method == "GET":  #限定輸入類型為GET  
        searchGrade = Classlist.objects.filter(Grade=Grade).count()
        #篩選符合年級的資料筆數
        searchClass = Classlist.objects.filter(Class=Class).count()
        #篩選符合班級的資料筆數
        searchNumber = Classlist.objects.filter(Number=Number).count()
        #篩選符合學號的資料筆數
        if searchGrade == 1 and searchClass == 1 and searchNumber == 1 :
            #若以上三個資料筆數都為1時:
            searchName = Classlist.objects.get(Grade=Grade, 
                                               Class=Class, 
                                               Number=Number)
            #取得符合以上三個搜尋要素的學生
            outputinfo = {"搜尋結果": searchName.Name}
            #印出搜尋到的結果
        else:
            #若以上三個資料筆數不為1時:
            outputinfo = {"年級搜尋筆數": searchGrade,
                          "班級搜尋筆數": searchClass,
                          "座號搜尋筆數": searchNumber, 
                          "搜尋學生":"找不到此學生"}
            #將三個篩選的資料筆數與找不到此學生都列印出來
    else:
        outputinfo['資料類型錯誤'] = "請使用GET輸入"
    return JsonResponse(outputinfo, safe=False, json_dumps_params={'ensure_ascii': False})

我們測試看看:
目前資料庫有這五位學生資料

我們到Postman搜尋:
127.0.0.1:8000/check_class_member/四年級/甲班/13/

我們改搜尋:
127.0.0.1:8000/check_class_member/六年級/甲班/13/

好像這三樣都有至少1筆的資料,導致搜尋到結果不符合條件。
我們回到views.py修改一下條件判斷:

#更改前
if searchGrade == 1 and searchClass == 1 and searchNumber == 1 :

#將符合條件從(==1)改成(>=1)

#更改後
if searchGrade >= 1 and searchClass >= 1 and searchNumber >= 1 :

再試看看:

這樣我們就能透過動態網址搜尋我們要的資料了,希望大家都實作成功。
先到這裡,大家掰掰~
圖片來源:狗勾司機


上一篇
我只是一隻貓!!! 動態網址(上) 江狗(Django) 鐵人Day24
下一篇
Vodka(?) LINE Bot申請 江狗(Django) 鐵人Day26
系列文
Django新手指南30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言